package com._51doit.jdbc;

import com._51doit.beans.Student;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @Date 2021/8/24
 * @Created by HANGGE
 * @Description
 * PreparedStatement  类
 * 可以实现SQL的执行功能
 *  对SQL进行预编译 , 防止SQL注入的风险
 */
public class Demo04 {
    public static void main(String[] args) throws Exception {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet resultSet = null;
        try {
            // 1 注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            // 2获取连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_doit26", "root", "root");
            // 获取对象的时候传入SQL
            /**
             * 获取对象的时候传入SQL
             * 可以对SQL预编译  检查 校验
             * select * from tb_user where name = zss and pwd = 123    ;// sql注入风险
             *
             */
            ps = conn.prepareStatement("select * from tb_stu where  id = ?");
            // 在执行SQL语句之前  给? 占位符赋值  内部重新的编译SQL语句  检查 校验
            ps.setInt(1 , 2);
            //执行SQL语句
            resultSet = ps.executeQuery();
            System.out.println(1/0); // 解析引擎停止
            List<Student> list = new ArrayList<Student>();
            while (resultSet.next()){
                String id = resultSet.getString(1);
                String name = resultSet.getString(2);
                int age = resultSet.getInt(3);
                String tel = resultSet.getString(4);
                String gender = resultSet.getString(5);
                double score = resultSet.getDouble(6);
                String address = resultSet.getString(7);
                //  2) 将字段封装在执行的属性中
                Student student = new Student(id,name,age,tel,gender,score,address);
                list.add(student) ;

            }
            System.out.println(list);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 最终都会关闭
            resultSet.close();
            ps.close();
            conn.close();
        }




    }
}
